home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / share / pyshared / PIL / GdImageFile.py < prev    next >
Text File  |  2006-12-03  |  2KB  |  87 lines

  1. #
  2. # The Python Imaging Library.
  3. # $Id: GdImageFile.py 2134 2004-10-06 08:55:20Z fredrik $
  4. #
  5. # GD file handling
  6. #
  7. # History:
  8. # 1996-04-12 fl   Created
  9. #
  10. # Copyright (c) 1997 by Secret Labs AB.
  11. # Copyright (c) 1996 by Fredrik Lundh.
  12. #
  13. # See the README file for information on usage and redistribution.
  14. #
  15.  
  16.  
  17. # NOTE: This format cannot be automatically recognized, so the
  18. # class is not registered for use with Image.open().  To open a
  19. # gd file, use the GdImageFile.open() function instead.
  20.  
  21. # THE GD FORMAT IS NOT DESIGNED FOR DATA INTERCHANGE.  This
  22. # implementation is provided for convenience and demonstrational
  23. # purposes only.
  24.  
  25.  
  26. __version__ = "0.1"
  27.  
  28. import string
  29. import Image, ImageFile, ImagePalette
  30.  
  31. def i16(c):
  32.     return ord(c[1]) + (ord(c[0])<<8)
  33.  
  34. ##
  35. # Image plugin for the GD uncompressed format.  Note that this format
  36. # is not supported by the standard <b>Image.open</b> function.  To use
  37. # this plugin, you have to import the <b>GdImageFile</b> module and
  38. # use the <b>GdImageFile.open</b> function.
  39.  
  40. class GdImageFile(ImageFile.ImageFile):
  41.  
  42.     format = "GD"
  43.     format_description = "GD uncompressed images"
  44.  
  45.     def _open(self):
  46.  
  47.         # Header
  48.         s = self.fp.read(775)
  49.  
  50.         self.mode = "L" # FIXME: "P"
  51.         self.size = i16(s[0:2]), i16(s[2:4])
  52.  
  53.         # transparency index
  54.         tindex = i16(s[5:7])
  55.         if tindex < 256:
  56.             self.info["transparent"] = tindex
  57.  
  58.         self.palette = ImagePalette.raw("RGB", s[7:])
  59.  
  60.         self.tile = [("raw", (0,0)+self.size, 775, ("L", 0, -1))]
  61.  
  62. ##
  63. # Load texture from a GD image file.
  64. #
  65. # @param filename GD file name, or an opened file handle.
  66. # @param mode Optional mode.  In this version, if the mode argument
  67. #     is given, it must be "r".
  68. # @return An image instance.
  69. # @exception IOError If the image could not be read.
  70.  
  71. def open(fp, mode = "r"):
  72.  
  73.     if mode != "r":
  74.         raise ValueError("bad mode")
  75.  
  76.     if type(fp) == type(""):
  77.         import __builtin__
  78.         filename = fp
  79.         fp = __builtin__.open(fp, "rb")
  80.     else:
  81.         filename = ""
  82.  
  83.     try:
  84.         return GdImageFile(fp, filename)
  85.     except SyntaxError:
  86.         raise IOError("cannot identify this image file")
  87.